{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "# 多模型对比分析（MNIST & CIFAR-10）\n",
    "#本Notebook汇总线性回归、逻辑回归、SVM、决策树、KNN、MLP六种模型在MNIST和CIFAR-10上的表现，并进行可视化对比和分析。"
   ],
   "id": "3493789bc4d940bc"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-10T03:13:26.058322Z",
     "start_time": "2025-06-10T03:13:25.585357Z"
    }
   },
   "cell_type": "code",
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt"
   ],
   "id": "86fb7f867aaaf9c8",
   "outputs": [],
   "execution_count": 1
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 汇总各模型实验结果",
   "id": "3ca729296e96294f"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-10T03:13:26.065191Z",
     "start_time": "2025-06-10T03:13:26.062328Z"
    }
   },
   "cell_type": "code",
   "source": [
    "results = {\n",
    "    '线性回归': {'MNIST': 0.219, 'CIFAR-10': 0.132},\n",
    "    '逻辑回归': {'MNIST': 0.874, 'CIFAR-10': 0.274},\n",
    "    'SVM': {'MNIST': 0.886, 'CIFAR-10': 0.374},\n",
    "    '决策树': {'MNIST': 0.748, 'CIFAR-10': 0.233},\n",
    "    'KNN': {'MNIST': 0.816, 'CIFAR-10': 0.236},\n",
    "    'MLP': {'MNIST': 0.896, 'CIFAR-10': 0.354}\n",
    "}"
   ],
   "id": "27a40a12e8ddf699",
   "outputs": [],
   "execution_count": 2
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 各模型准确率对比可视化",
   "id": "33ba234b5145f777"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-06-10T03:13:26.443884Z",
     "start_time": "2025-06-10T03:13:26.297699Z"
    }
   },
   "cell_type": "code",
   "source": [
    "model_names = list(results.keys())\n",
    "acc_mnist = [results[name]['MNIST'] for name in model_names]\n",
    "acc_cifar = [results[name]['CIFAR-10'] for name in model_names]\n",
    "x = np.arange(len(model_names))\n",
    "width = 0.35\n",
    "plt.figure(figsize=(10,6))\n",
    "plt.bar(x-width/2, acc_mnist, width, label='MNIST')\n",
    "plt.bar(x+width/2, acc_cifar, width, label='CIFAR-10')\n",
    "plt.ylabel('Accuracy')\n",
    "plt.title('六种模型在MNIST和CIFAR-10上的准确率对比')\n",
    "plt.xticks(x, model_names, rotation=15)\n",
    "plt.legend()\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ],
   "id": "2b95ef2ecbe99ca5",
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 32447 (\\N{CJK UNIFIED IDEOGRAPH-7EBF}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 24615 (\\N{CJK UNIFIED IDEOGRAPH-6027}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 22238 (\\N{CJK UNIFIED IDEOGRAPH-56DE}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 24402 (\\N{CJK UNIFIED IDEOGRAPH-5F52}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 36923 (\\N{CJK UNIFIED IDEOGRAPH-903B}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 36753 (\\N{CJK UNIFIED IDEOGRAPH-8F91}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 20915 (\\N{CJK UNIFIED IDEOGRAPH-51B3}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 31574 (\\N{CJK UNIFIED IDEOGRAPH-7B56}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 26641 (\\N{CJK UNIFIED IDEOGRAPH-6811}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 20845 (\\N{CJK UNIFIED IDEOGRAPH-516D}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 31181 (\\N{CJK UNIFIED IDEOGRAPH-79CD}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 27169 (\\N{CJK UNIFIED IDEOGRAPH-6A21}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 22411 (\\N{CJK UNIFIED IDEOGRAPH-578B}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 22312 (\\N{CJK UNIFIED IDEOGRAPH-5728}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 21644 (\\N{CJK UNIFIED IDEOGRAPH-548C}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 19978 (\\N{CJK UNIFIED IDEOGRAPH-4E0A}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 30340 (\\N{CJK UNIFIED IDEOGRAPH-7684}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 20934 (\\N{CJK UNIFIED IDEOGRAPH-51C6}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 30830 (\\N{CJK UNIFIED IDEOGRAPH-786E}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 29575 (\\N{CJK UNIFIED IDEOGRAPH-7387}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 23545 (\\N{CJK UNIFIED IDEOGRAPH-5BF9}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "C:\\Users\\Lenovo\\AppData\\Local\\Temp\\ipykernel_22152\\3073683763.py:13: UserWarning: Glyph 27604 (\\N{CJK UNIFIED IDEOGRAPH-6BD4}) missing from font(s) DejaVu Sans.\n",
      "  plt.tight_layout()\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 20845 (\\N{CJK UNIFIED IDEOGRAPH-516D}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 31181 (\\N{CJK UNIFIED IDEOGRAPH-79CD}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 27169 (\\N{CJK UNIFIED IDEOGRAPH-6A21}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 22411 (\\N{CJK UNIFIED IDEOGRAPH-578B}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 22312 (\\N{CJK UNIFIED IDEOGRAPH-5728}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 21644 (\\N{CJK UNIFIED IDEOGRAPH-548C}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 19978 (\\N{CJK UNIFIED IDEOGRAPH-4E0A}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 30340 (\\N{CJK UNIFIED IDEOGRAPH-7684}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 20934 (\\N{CJK UNIFIED IDEOGRAPH-51C6}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 30830 (\\N{CJK UNIFIED IDEOGRAPH-786E}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 29575 (\\N{CJK UNIFIED IDEOGRAPH-7387}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 23545 (\\N{CJK UNIFIED IDEOGRAPH-5BF9}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 27604 (\\N{CJK UNIFIED IDEOGRAPH-6BD4}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 32447 (\\N{CJK UNIFIED IDEOGRAPH-7EBF}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 24615 (\\N{CJK UNIFIED IDEOGRAPH-6027}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 22238 (\\N{CJK UNIFIED IDEOGRAPH-56DE}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 24402 (\\N{CJK UNIFIED IDEOGRAPH-5F52}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 36923 (\\N{CJK UNIFIED IDEOGRAPH-903B}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 36753 (\\N{CJK UNIFIED IDEOGRAPH-8F91}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 20915 (\\N{CJK UNIFIED IDEOGRAPH-51B3}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 31574 (\\N{CJK UNIFIED IDEOGRAPH-7B56}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n",
      "D:\\python\\Lib\\site-packages\\IPython\\core\\pylabtools.py:170: UserWarning: Glyph 26641 (\\N{CJK UNIFIED IDEOGRAPH-6811}) missing from font(s) DejaVu Sans.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x600 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAJOCAYAAACqS2TfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8ekN5oAAAACXBIWXMAAA9hAAAPYQGoP6dpAABMyElEQVR4nO3deZhe4/0/8PfMZJOQBNlkkYgQYkkIIvaQNJZqaWtfQ2mLLxq0KBJbbLVUba1K+PYbBMVPhbREU1Ssia21E7EkIUISQiIz8/vDlaedJiHDnIwkr9d1PRdzP/c5z+dM7mtm3ue+zzll1dXV1QEAAADqXHl9FwAAAADLK6EbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDsNy7/vrrU1ZWlrKysjz88MMLvV9dXZ1OnTqlrKws3/3ud2u8t2C7iy++eLH7ffLJJ0ttQ4cOTVlZWaZPn16j75///Odsv/32adOmTZo2bZquXbtm7733zpgxY5IkO+ywQ+mzvuw1dOjQWh9/ZWVlRowYkR122CGrrbZaGjdunC5dumTQoEE1av+y41nU65prrqnxOb/4xS9SVlaWffbZZ5F1TJo0qcb25eXlWW211bLLLrtk/PjxS3w85557br73ve+lbdu2X/k9eeedd7L33nunZcuWad68eb7//e/n9ddfX+LPAoBvqkF9FwDAt9c///nPbLLJJmnUqNEi3583b14mTpz4lX1eeOGFfPbZZ/XSb+211y61NWnSJDfeeGO22WabGn3//ve/5+23307jxo0Xua8kueiii/Kzn/0sTZs2XWyfxfn1r3+dk046Kdtvv31OOeWUNG3aNK+++mruv//+3Hzzzdl5553zq1/9Kj/+8Y9L2zzxxBO5/PLLc+qpp2b99dcvtW+88cbZZ5998uc//znl5QufO6+qqspee+2VG264IUny6aef5gc/+EHGjBmT7bbbLqeeempWW221TJo0KbfccktuuOGGTJ48OR07dvzSY7j66quz8sor12jr06dP6f+rq6tz0003pUuXLvnzn/+c2bNnZ5VVVlnkvvbbb7/suuuuqayszMsvv5yrrroq/fr1yxNPPJGNNtroK7+fp512Wtq1a5dNNtkkf/nLXxbb7+OPP06/fv0yc+bMnHrqqWnYsGEuvfTSbL/99nn66aez+uqrJ0natWuXjz/+eJH7mD9/fq666qocdthhK1w/AOqG0A3AYlVXV2eLLbZY5Oxwkmy55ZZL3Ke++v2nXXfdNbfeemsuv/zyNGjw71+BN954Y3r37r3Q7PQCvXr1ytNPP51rrrkmgwcPXmSfxZk/f37OPvvsDBgwIH/9618Xev+9995LkgwYMKBGe5MmTXL55ZdnwIAB2WGHHWq8V1lZmbvuuiv9+/dfaH9jxozJ//3f/5W+PumkkzJmzJhceumlOf7442v0HTJkSC699NIlOo4f/ehHadWq1WLfHzduXN5+++088MADGThwYG6//fYccsghi+y76aab5sADDyx9ve2222aXXXbJ1Vdfnauuuuora3njjTfSpUuXTJ8+Pa1bt15sv6uuuiqvvPJKHn/88Wy++eZJkl122SUbbrhhLr744gwbNizJF/9GH330UY0xscDJJ5+cqqqqFbIfAHXD8nIAVhj77bdfPvjgg9x3332ltnnz5uW2227L/vvvv9jttt566+y444658MIL8+mnn9bqM6dPn55Zs2Zl6623XuT7bdq0qdX+auPtt9/O7373uwwYMGChwJ0kFRUVOfHEE79ylntJjBw5Mj169Ei/fv3Sv3//jBw5com33XbbbZMkr7322hL179KlyxL1u+2227L55puXAneSrLfeetlpp51yyy23LHF9APBNCN0ArDC6dOmSvn375qabbiq13XvvvZk5c2b23XffL9126NChmTZtWq6++upafWabNm2y0kor5c9//nNmzJjxter+uu69997Mnz8/Bx100Dfe14wZMzJ9+vTS68MPPyy9N3fu3PzpT3/Kfvvtl+SLkxsPPPBApk6dukT7njRpUpJk1VVX/cZ1LlBVVZVnn302m2222ULvbbHFFnnttdcye/bsOvs8AFgcoRuAFcr++++fO++8szRjPXLkyGy//fZp3779l2637bbbpl+/frnoootqNdtdXl6ek046KU899VTWXHPN7Lrrrhk2bFgmTJjwjY5jSbzwwgtJskTXSX+V7t27p3Xr1qXXJptsUnrv7rvvzkcffVQ6cbHHHnukYcOGufnmmxe5rzlz5mT69OmZNm1aHn744QwaNCjJF0vY68qMGTMyd+7crLHGGgu9t6Dt3XffrbPPA4DFEboBWKHsvffe+fTTT3P33Xdn9uzZufvuu790afl/Gjp0aKZOnbrQXbu/yplnnpkbb7yxdOOvX/3qV+ndu3c23XTTUjAuwqxZs5JksTc0q40//elPue+++0qv/1w+PnLkyGy22Wbp1q1b6fN22223xS4xHzJkSFq3bp127dpl2223zQsvvJCLL764TkP3ghMji7o5XpMmTWr0AYAiuZEaACuU1q1bp3///rnxxhszZ86cVFZWLnHY22677dKvX79ceOGF+elPf1qrz91vv/2y3377ZdasWXnsscdy/fXX58Ybb8zuu++e559/vhQE61Lz5s2TpE6WUW+33XaLvJHaRx99lHvuuSfHHHNMXn311VL71ltvnT/96U95+eWXs+6669bY5sgjj8xee+2Vzz77LA888EAuv/zyVFZW1ujz30vTW7RokZVWWmmJ613Qd+7cuQu999lnn9XoAwBFEroBWOHsv//+OeKIIzJ16tTssssuadmy5RJvO2TIkOywww753e9+V6vtFmjevHkGDBiQAQMGpGHDhrnhhhvy2GOPZfvtt6/1vr7KeuutlyR57rnn0qtXrzrff5LceuutmTt3bi6++OJFPst85MiROfPMM2u0rbPOOqU7r3/3u99NRUVFTj755PTr1690DfZ/LwsfMWJEDj300CWua8HzyKdMmbLQewvavuqSAgCoC5aXA7DC2XPPPVNeXp5HH310iZeWL7D99ttnhx12yAUXXPCNlycvCJiLCoZ1YZdddklFRUWNR4jVtZEjR2bDDTfMrbfeutBrwYqCr/KrX/0qq6yySk477bRS238uZb/vvvsycODAWtVVXl6ejTbaKE8++eRC7z322GPp2rVrnSy7B4CvYqYbgBXOyiuvnKuvvjqTJk3K7rvvXuvthw4dmh122CG///3vv7LvnDlz8swzz6Rv374LvXfvvfcm+eImZUXo1KlTjjjiiFxzzTX57W9/m//5n/+p8X5VVVUuvfTS7LPPPl/rsWFvvfVWHnzwwZx55pmLXKI/b968HHDAAXnsscfSp0+fxe6nZcuW+clPfpILL7wwTz/9dHr16rXIZ5DX1o9+9KOcfPLJefLJJ0snOF566aU88MADOfHEE7/x/gFgSQjdAKyQDjnkkK+97fbbb5/tt98+f//737+y75w5c7LVVltlyy23zM4775xOnTrlo48+yp133pmHHnooe+yxR407gde1iy++OK+99lqOPfbY3H777fnud7+bVVddNZMnT86tt96aF1988Ssfl7Y4N954Y6qrq/O9731vke/vuuuuadCgQUaOHPmloTtJjjvuuFx22WU5//zzF3vX8wX++Mc/5s0338ycOXOSJA8++GDOOeecJMlBBx2Uzp07J0mOOuqoXHvttdltt91y4oknpmHDhrnkkkvStm3bnHDCCbU9XAD4WoRuAPgahg4dmn79+n1lv5YtW+baa6/N6NGjM2LEiEydOjUVFRXp3r17Lrroohx77LGF1tm0adPce++9uf7663PDDTfk7LPPzpw5c9K+ffvsuOOOGTlyZDp06PC19j1y5Misueaa6dmz5yLfb9myZbbZZpuMGjUql1xyyZfuq3379tl///3zxz/+Ma+99lrWXnvtxfa97rrrapzw+Nvf/pa//e1vSZJtttmmFLpXWWWVjBs3Lj//+c9zzjnnpKqqKjvssEMuvfTStG7duraHCwBfi9ANwHLv0EMPXaKbcE2aNGmhturq6kX23WGHHRb53tChQzN06NDS1w0aNMiPf/zj/PjHP17ScpN8sTR6cZ9dWxUVFTn88MNz+OGHf2m/RX2f/vt4/tOzzz77lZ+9IAwnSZcuXb70mEaMGJERI0Z85T7HjRv3lX0W6NixY2699dYl7g8Adc2N1AAAAKAgZroB+FKPPvroYh+N9fHHHy9xn/rstzzaY4890qDBwr/G58+fnz322GPpF7SMW9QzyJMvnul9xRVXrLD9APjmyqrrau0aAAAAUIPl5QAAAFAQoRsAAAAKInQDAABAQVa4G6lVVVXl3XffzSqrrJKysrL6LgcAAIBlUHV1dWbPnp327dunvHzx89krXOh+991306lTp/ouAwAAgOXAW2+9lY4dOy72/RUudK+yyipJvvjGNG/evJ6rAQAAYFk0a9asdOrUqZQxF2eFC90LlpQ3b95c6AYAAOAb+arLlt1IDQAAAAoidAMAAEBBhG4AAAAoyAp3TfeSqqyszOeff17fZbCEGjZsmIqKivouAwAAoAah+79UV1dn6tSp+eijj+q7FGqpZcuWadeuneevAwAA3xpC939ZELjbtGmTpk2bCnDLgOrq6syZMyfvvfdekmSNNdao54oAAAC+IHT/h8rKylLgXn311eu7HGphpZVWSpK89957adOmjaXmAADAt4Ibqf2HBddwN23atJ4r4etY8O/mWnwAAODbQuheBEvKl03+3QAAgG8boRsAAAAKInQDAABAQdxIbQl1OXn0Uv28SefvVqv+hx56aG644Yb85Cc/yTXXXFPjvaOPPjpXXXVVDjnkkFx//fWlvuedd15OPvnkUr8777wze+65Z6qrq5Mk48aNS79+/fLhhx+mZcuWSZJrr702V1xxRV577bU0aNAga621Vvbee++ccsop6dKlS958883F1rjg8wEAAFYUZrqXI506dcrNN9+cTz/9tNT22Wef5cYbb8yaa65Zo2+TJk1ywQUX5MMPP1zi/Q8fPjzHH398jj322Dz99NP5xz/+kV/84hf5+OOPkyRPPPFEpkyZkilTpuRPf/pTkuSll14qtf3mN7+pg6MEAABYdpjpXo5suummee2113L77bfngAMOSJLcfvvtWXPNNbPWWmvV6Nu/f/+8+uqrOe+883LhhRcu0f7vuuuu7L333jn88MNLbRtssEHp/1u3bl36/9VWWy1J0qZNm9IsOQAAwIrGTPdy5rDDDsuIESNKXw8fPjyDBg1aqF9FRUWGDRuW3/72t3n77beXaN/t2rXLo48++qVLyAEAAPg3oXs5c+CBB+bhhx/Om2++mTfffDP/+Mc/cuCBBy6y75577plevXplyJAhS7TvIUOGpGXLlunSpUu6d++eQw89NLfcckuqqqrq8hAAAACWG0L3cqZ169bZbbfdcv3112fEiBHZbbfd0qpVq8X2v+CCC3LDDTfkhRde+Mp9r7HGGhk/fnyee+65HHfccZk/f34OOeSQ7LzzzoI3AADAIgjdy6HDDjss119/fW644YYcdthhX9p3u+22y8CBA3PKKacs8f433HDDHHXUUfm///u/3Hfffbnvvvvy97///ZuWDQAAsNxxI7Xl0M4775x58+alrKwsAwcO/Mr+559/fnr16pXu3bvX+rN69OiRJPnkk09qvS0AAMDyTuheDlVUVJSWi1dUVHxl/4022igHHHBALr/88i/t97Of/Szt27fPjjvumI4dO2bKlCk555xz0rp16/Tt27dOagcAAFieWF6+nGrevHmaN2++xP3POuusr7wuu3///nn00Uez1157Zd11180Pf/jDNGnSJGPHjs3qq6/+TUsGAABY7pRVV1dX13cRS9OsWbPSokWLzJw5c6FQ+tlnn+WNN97IWmutlSZNmtRThXxd/v0AAICl5cuy5X+yvBwAAFhhdTl5dH2XUGcmnb9bfZfAIlheDgAAAAURugEAAKAgQjcAAAAUROgGAACAgriRGgBLxI1mAABqz0w3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAK4kZqS2poi6X8eTNrvcnUqVNz7rnnZvTo0XnnnXfSpk2b9OrVK8cff3x22mmndOnSJccff3yOP/74JEmXLl3y5ptv1thHhw4d8vbbb5e+HjhwYO6///48+uij2XzzzWv0PfTQQ3PDDTckSRo0aJCOHTtmr732yllnnZUmTZosts4HH3wwF110UZ566qlMmTIld9xxR/bYY48afaqrqzNkyJBce+21+eijj7L11lvn6quvzjrrrFPr7wsAAEB9MdO9nJg0aVJ69+6dBx54IBdddFGee+65jBkzJv369cvRRx+92O3OOuusTJkypfSaOHFi6b3JkyfnkUceyTHHHJPhw4cvcvudd945U6ZMyeuvv55LL700v/vd7zJkyJAvrfWTTz5Jz549c+WVVy62z4UXXpjLL78811xzTR577LE0a9YsAwcOzGefffYV3wkAAIBvDzPdy4mjjjoqZWVlefzxx9OsWbNS+wYbbJDDDjtssdutssoqadeu3SLfGzFiRL773e/mZz/7WbbccstccsklWWmllWr0ady4cWn7Tp06pX///rnvvvtywQUXLPYzd9lll+yyyy6Lfb+6ujqXXXZZTjvttHz/+99Pkvzv//5v2rZtmzvvvDP77rvvYrdl0TzqCQAA6oeZ7uXAjBkzMmbMmBx99NE1AvcCLVu2rPU+q6urM2LEiBx44IFZb7310q1bt9x2221fus3zzz+fRx55JI0aNar15/2nN954I1OnTk3//v1LbS1atEifPn0yfvz4b7RvAACApUnoXg68+uqrqa6uznrrrVfrbX/5y19m5ZVXLr0uv/zyJMn999+fOXPmZODAgUmSAw88MNddd91C2999991ZeeWV06RJk2y00UZ57733ctJJJ32j45k6dWqSpG3btjXa27ZtW3oPAABgWSB0Lweqq6u/9rYnnXRSnn766dLr4IMPTpIMHz48++yzTxo0+OIKhP322y//+Mc/8tprr9XYvl+/fnn66afz2GOP5ZBDDsmgQYPywx/+MEny0EMP1Qj0I0eO/Np1AgAALItc070cWGeddVJWVpYXX3yx1tu2atUq3bp1q9E2Y8aM3HHHHfn8889z9dVXl9orKyszfPjwnHvuuaW2Zs2albYfPnx4evbsmeuuuy6HH354Nttsszz99NOlvv89c704C64RnzZtWtZYY41S+7Rp09KrV6/aHiIAAEC9MdO9HFhttdUycODAXHnllfnkk08Wev+jjz6q1f5GjhyZjh075plnnqkxC37xxRfn+uuvT2Vl5SK3Ky8vz6mnnprTTjstn376aVZaaaV069at9FpllVWW6PPXWmuttGvXLmPHji21zZo1K4899lj69u1bq2MBAACoT0L3cuLKK69MZWVltthii/zpT3/KK6+8khdeeCGXX355rYPqddddlx/96EfZcMMNa7wOP/zwTJ8+PWPGjFnstnvttVcqKiq+9HFgH3/8cSnIJ1/cOO3pp5/O5MmTkyRlZWU5/vjjc8455+Suu+7Kc889l4MPPjjt27df6HneAAAA32ZC93Kia9eumTBhQvr165cTTjghG264YQYMGJCxY8fWWCL+VZ566qk888wzpeuy/1OLFi2y0047LfKGags0aNAgxxxzTC688MJFzronyZNPPplNNtkkm2yySZJk8ODB2WSTTXLGGWeU+vziF7/I//zP/+TII4/M5ptvno8//jhjxoxJkyZNlvhYAAAA6ltZ9Te5C9cyaNasWWnRokVmzpyZ5s2b13jvs88+yxtvvJG11lpLuFsG+fdbPM/ppi4YRwAsj/x+4+v6smz5n8x0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToXoSqqqr6LoGvwb8bAADwbdOgvgv4NmnUqFHKy8vz7rvvpnXr1mnUqFHKysrquyy+QnV1debNm5f3338/5eXladSoUX2XBAAAkETorqG8vDxrrbVWpkyZknfffbe+y6GWmjZtmjXXXDPl5RZwAAAA3w5C939p1KhR1lxzzcyfPz+VlZX1XQ5LqKKiIg0aNLAyAQAA+FYRuhehrKwsDRs2TMOGDeu7FAAAAJZh1uECAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABSkQX0XAAAAtdXl5NH1XUKdmXT+bvVdAlAgM90AAABQEKEbAAAACiJ0AwAAQEHqPXRfeeWV6dKlS5o0aZI+ffrk8ccf/9L+l112Wbp3756VVlopnTp1ys9//vN89tlnS6laAAAAWHL1GrpHjRqVwYMHZ8iQIZkwYUJ69uyZgQMH5r333ltk/xtvvDEnn3xyhgwZkhdeeCHXXXddRo0alVNPPXUpVw4AAABfrV5D9yWXXJIjjjgigwYNSo8ePXLNNdekadOmGT58+CL7P/LII9l6662z//77p0uXLvnOd76T/fbb7ytnxwEAAKA+1FvonjdvXp566qn079//38WUl6d///4ZP378IrfZaqut8tRTT5VC9uuvv5577rknu+6661KpGQAAAGqj3p7TPX369FRWVqZt27Y12tu2bZsXX3xxkdvsv//+mT59erbZZptUV1dn/vz5+elPf/qly8vnzp2buXPnlr6eNWtW3RwAAAAAfIV6v5FabYwbNy7Dhg3LVVddlQkTJuT222/P6NGjc/bZZy92m/POOy8tWrQovTp16rQUKwYAAGBFVm8z3a1atUpFRUWmTZtWo33atGlp167dIrc5/fTTc9BBB+XHP/5xkmSjjTbKJ598kiOPPDK/+tWvUl6+8DmEU045JYMHDy59PWvWLMEbAACApaLeZrobNWqU3r17Z+zYsaW2qqqqjB07Nn379l3kNnPmzFkoWFdUVCRJqqurF7lN48aN07x58xovAAAAWBrqbaY7SQYPHpxDDjkkm222WbbYYotcdtll+eSTTzJo0KAkycEHH5wOHTrkvPPOS5LsvvvuueSSS7LJJpukT58+efXVV3P66adn9913L4VvAAAA+Lao19C9zz775P33388ZZ5yRqVOnplevXhkzZkzp5mqTJ0+uMbN92mmnpaysLKeddlreeeedtG7dOrvvvnvOPffc+joEAAAAWKx6Dd1Jcswxx+SYY45Z5Hvjxo2r8XWDBg0yZMiQDBkyZClUBgAAAN/MMnX3cgAAAFiWCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABWlQ3wUAACuWLiePru8S6syk83er7xIA+JYz0w0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgILUe+i+8sor06VLlzRp0iR9+vTJ448//qX9P/rooxx99NFZY4010rhx46y77rq55557llK1AAAAsOQa1OeHjxo1KoMHD84111yTPn365LLLLsvAgQPz0ksvpU2bNgv1nzdvXgYMGJA2bdrktttuS4cOHfLmm2+mZcuWS794AAAA+Ar1GrovueSSHHHEERk0aFCS5Jprrsno0aMzfPjwnHzyyQv1Hz58eGbMmJFHHnkkDRs2TJJ06dJlaZYMAAAAS6zelpfPmzcvTz31VPr37//vYsrL079//4wfP36R29x1113p27dvjj766LRt2zYbbrhhhg0blsrKysV+zty5czNr1qwaLwAAAFga6i10T58+PZWVlWnbtm2N9rZt22bq1KmL3Ob111/PbbfdlsrKytxzzz05/fTTc/HFF+ecc85Z7Oecd955adGiRenVqVOnOj0OAAAAWJx6v5FabVRVVaVNmzb5/e9/n969e2efffbJr371q1xzzTWL3eaUU07JzJkzS6+33nprKVYMAADAiqzerulu1apVKioqMm3atBrt06ZNS7t27Ra5zRprrJGGDRumoqKi1Lb++utn6tSpmTdvXho1arTQNo0bN07jxo3rtngAAABYAvU2092oUaP07t07Y8eOLbVVVVVl7Nix6du37yK32XrrrfPqq6+mqqqq1Pbyyy9njTXWWGTgBgAAgPpUr8vLBw8enGuvvTY33HBDXnjhhfzsZz/LJ598Urqb+cEHH5xTTjml1P9nP/tZZsyYkeOOOy4vv/xyRo8enWHDhuXoo4+ur0MAAACAxarXR4bts88+ef/993PGGWdk6tSp6dWrV8aMGVO6udrkyZNTXv7v8wKdOnXKX/7yl/z85z/PxhtvnA4dOuS4447LL3/5y/o6BAAAAFiseg3dSXLMMcfkmGOOWeR748aNW6itb9++efTRRwuuCgAAAL65Zeru5QAAALAsEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUROgGAACAggjdAAAAUBChGwAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACiJ0AwAAQEGEbgAAACiI0A0AAAAFEboBAACgIEI3AAAAFEToBgAAgIII3QAAAFAQoRsAAAAKInQDAABAQYRuAAAAKIjQDQAAAAURugEAAKAgQjcAAAAUpNahu0uXLjnrrLMyefLkIuoBAACA5UatQ/fxxx+f22+/PV27ds2AAQNy8803Z+7cuUXUBgAAAMu0rxW6n3766Tz++ONZf/318z//8z9ZY401cswxx2TChAlF1AgAAADLpK99Tfemm26ayy+/PO+++26GDBmSP/zhD9l8883Tq1evDB8+PNXV1XVZJwAAACxzGnzdDT///PPccccdGTFiRO67775sueWWOfzww/P222/n1FNPzf33358bb7yxLmsFAACAZUqtQ/eECRMyYsSI3HTTTSkvL8/BBx+cSy+9NOutt16pz5577pnNN9+8TgsFAACAZU2tQ/fmm2+eAQMG5Oqrr84ee+yRhg0bLtRnrbXWyr777lsnBQIAAMCyqtah+/XXX0/nzp2/tE+zZs0yYsSIr10UAAAALA9qfSO19957L4899thC7Y899liefPLJOikKAAAAlge1Dt1HH3103nrrrYXa33nnnRx99NF1UhQAAAAsD2oduv/1r39l0003Xah9k002yb/+9a86KQoAAACWB7UO3Y0bN860adMWap8yZUoaNPjaTyADAACA5U6tQ/d3vvOdnHLKKZk5c2ap7aOPPsqpp56aAQMG1GlxAAAAsCyr9dT0r3/962y33Xbp3LlzNtlkkyTJ008/nbZt2+aPf/xjnRcIAAAAy6pah+4OHTrk2WefzciRI/PMM89kpZVWyqBBg7Lffvst8pndAAAAsKL6WhdhN2vWLEceeWRd1wIAAADLla9957N//etfmTx5cubNm1ej/Xvf+943LgoAAACWB7UO3a+//nr23HPPPPfccykrK0t1dXWSpKysLElSWVlZtxUCAADAMqrWdy8/7rjjstZaa+W9995L06ZN889//jMPPvhgNttss4wbN66AEgEAAGDZVOuZ7vHjx+eBBx5Iq1atUl5envLy8myzzTY577zzcuyxx2bixIlF1AkAAADLnFrPdFdWVmaVVVZJkrRq1SrvvvtukqRz58556aWX6rY6AAAAWIbVeqZ7ww03zDPPPJO11lorffr0yYUXXphGjRrl97//fbp27VpEjQAAALBMqnXoPu200/LJJ58kSc4666x897vfzbbbbpvVV189o0aNqvMCAQAAYFlV69A9cODA0v9369YtL774YmbMmJFVV121dAdzAAAAoJbXdH/++edp0KBBnn/++Rrtq622msANAAAA/6VWobthw4ZZc801PYsbAAAAlkCt717+q1/9KqeeempmzJhRRD0AAACw3Kj1Nd1XXHFFXn311bRv3z6dO3dOs2bNarw/YcKEOisOAAAAlmW1Dt177LFHAWUAAADA8qfWoXvIkCFF1AEAAADLnVpf0w0AAAAsmVrPdJeXl3/p48Hc2RwAAAC+UOvQfccdd9T4+vPPP8/EiRNzww035Mwzz6yzwgAAAGBZV+vQ/f3vf3+hth/96EfZYIMNMmrUqBx++OF1UhgAAAAs6+rsmu4tt9wyY8eOravdAQAAwDKvTkL3p59+mssvvzwdOnSoi90BAADAcqHWy8tXXXXVGjdSq66uzuzZs9O0adP83//9X50WBwAAAMuyWofuSy+9tEboLi8vT+vWrdOnT5+suuqqdVocAAAALMtqHboPPfTQAsoAAACA5U+tr+keMWJEbr311oXab7311txwww11UhQAAAAsD2odus8777y0atVqofY2bdpk2LBhdVIUAAAALA9qHbonT56ctdZaa6H2zp07Z/LkyXVSFAAAACwPah2627Rpk2effXah9meeeSarr756nRQFAAAAy4Nah+799tsvxx57bP72t7+lsrIylZWVeeCBB3Lcccdl3333LaJGAAAAWCbV+u7lZ599diZNmpSddtopDRp8sXlVVVUOPvhg13QDAADAf6h16G7UqFFGjRqVc845J08//XRWWmmlbLTRRuncuXMR9QEAAMAyq9ahe4F11lkn66yzTl3WAgAAAMuVWl/T/cMf/jAXXHDBQu0XXnhh9tprrzopCgAAAJYHtQ7dDz74YHbdddeF2nfZZZc8+OCDdVIUAAAALA9qHbo//vjjNGrUaKH2hg0bZtasWXVSFAAAACwPah26N9poo4waNWqh9ptvvjk9evSok6IAAABgeVDrG6mdfvrp+cEPfpDXXnstO+64Y5Jk7NixufHGG3PbbbfVeYEAAACwrKp16N59991z5513ZtiwYbntttuy0korpWfPnnnggQey2mqrFVEjAAAALJO+1iPDdtttt+y2225JklmzZuWmm27KiSeemKeeeiqVlZV1WiAAAAAsq2p9TfcCDz74YA455JC0b98+F198cXbcccc8+uijdVkbAAAALNNqNdM9derUXH/99bnuuusya9as7L333pk7d27uvPNON1EDAACA/7LEM9277757unfvnmeffTaXXXZZ3n333fz2t78tsjYAAABYpi3xTPe9996bY489Nj/72c+yzjrrFFkTAAAALBeWeKb74YcfzuzZs9O7d+/06dMnV1xxRaZPn15kbQAAALBMW+LQveWWW+baa6/NlClT8pOf/CQ333xz2rdvn6qqqtx3332ZPXt2kXUCAADAMqfWdy9v1qxZDjvssDz88MN57rnncsIJJ+T8889PmzZt8r3vfa+IGgEAAGCZ9LUfGZYk3bt3z4UXXpi33347N910U13VBAAAAMuFbxS6F6ioqMgee+yRu+66qy52BwAAAMuFOgnd39SVV16ZLl26pEmTJunTp08ef/zxJdru5ptvTllZWfbYY49iCwQAAICvod5D96hRozJ48OAMGTIkEyZMSM+ePTNw4MC89957X7rdpEmTcuKJJ2bbbbddSpUCAABA7dR76L7kkktyxBFHZNCgQenR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zJiR1VdfPQcccEAOPPDA+i6PZcyCnzfz589PgwYNcuaZZ+aBBx7Ifffdly5dutR3eSxjpk+fnrvuuiuPPPJI1l133Xz/+99P9+7d67usFYaZburFgrP/06dPz6233pp11103zz33XA466KA8+eSTGTlyZK699to899xzSVLjWe2wgHHEN1VdXZ3f//736dy5c84999xSW5J8/PHHmTlzZn7wgx/kr3/9a5II3NRQXV2dDz/8MEkyfPjwbLzxxjn77LPTrFmzDB8+PI8//nhOOOGEfPjhh/n444/ruVqWBQtW2Ky55po555xzkvz7584+++yTTz75JO+88059lsgy5tFHH023bt3Stm3bXH755ZkzZ05GjBiR73znO3n66aeTWMW1NJjpZqlY3Nn/Aw88MBtuuGH22Wef/PznPy/1nz9/fho3bpyKioq89tprWXvtteuxer4tjCPqwpw5c3LmmWfm5Zdfzh133JFnn302b731Vm655ZZss8026devX5KkWbNm+fTTT7P11lvnN7/5TaZPn55WrVrVc/XUt9mzZ+epp57K//t//y8PP/xwXn755bz66quZMWNGhg0blu9///s1+jds2DBz5szJ22+/nfXWW6+equbbqrq6OnfffXf+8pe/5Iorrsjnn3+eKVOm5O23384f/vCHNGnSJCeddFKSZPvtt89nn32W559/PltttZWTgHypBSslVlpppUyZMiV/+MMfMmjQoCTJq6++ml69euUPf/hDLr/8cpMSS4HvMIWozdn/lVdeOZWVlXnhhRdK2y74RdKrV6/cf//9pXZWLMYR39Tnn3++UFtFRUX++te/Zt11102SbLPNNmndunW22mqrXHjhhXnzzTeTJA899FB23nnntG3bNk2bNs3f/va3JMbQimbevHl55513cv3112frrbfOD3/4w4wdOzZ77LFHnnjiifzkJz/JhAkTstFGG+WVV17J1KlTk3xxkjBJunTpkgYNGmTSpEn1eBR8W0ydOjXvv/9+jbbXXnstV111VZKkSZMm6du3b5o0aZIf/OAHueCCC3LzzTfn008/TUVFRXr06JFHH300s2bNqo/y+ZaZM2dOPv/885x55pk58cQTk/z7d9SCv4F69uyZLl265M0338ycOXMyb968dOvWLRtvvHEmTZqUmTNn1lv9KxKhmzoze/bsjBs3Lscff3y22GKLdOnSJe+//35mzJiRc889N9dff30OOuigtG/fPknSoEGDfPrpp5k9e3a6deuWiRMnJqkZlnbaaac8+OCDpXaWf8YR38Ts2bPz5JNP5qWXXkqPHj1KyzMXqK6uTuPGjfP222+XrmXr2rVrmjZtmi222CItW7YsLTN///3389lnn6Vfv35p3759aYm5MbR8q6qqyptvvpnhw4dn9913T58+fXLqqafmvPPOy09/+tP89a9/zdlnn53tt98+SbLxxhvngQceyEYbbZTp06eXwlBFRUWSpF27dmnevHnefffdejsm6k9VVVVuvfXWjB49Oscdd1zat2+fI444onRCsKysLNtss00aN26cxx57LEnSuXPnrL766undu3d++ctf5owzzsiIESOSJLvsskueeOKJ0s35/Dxa8VRVVeXmm2/OmmuumSOPPDINGzbMa6+9lokTJ2b27Nk1VkAsOPnXq1evTJw4MXPnzk2jRo3yySef5MMPP0y7du2y6qqr1tehrFCEbr62xZ3933PPPWuc/d9www3z6quvLvLsf0VFRaZMmZINNtggzzzzTJIvfgEtWOay3Xbb5Y033kjietzllXHEN/XWW2/l9NNPT7du3bL22mvnpz/9aZ5++unstNNOGT58eEaPHl3qW1ZWlpdffjmtW7cu/dHboUOHdOvWLc8880zOOeecvPLKK7nkkkvStm3bfPTRR1ljjTXSq1evPP7440mMoeXV/Pnzc/HFF2fttdfOWWedlerq6lx99dWZOHFiDj/88DRr1qx0/ePcuXNLP4N22mmnPPPMM2ndunWqq6tLP6MWaNy4cdq0aZOPPvooH3zwwdI+LOrJgjD8l7/8JT/+8Y/TqFGjrLbaaunQoUPuuuuunH766Xn77beTJO3bt0+3bt1y++23J0latmyZvn37ZtSoUTnppJNy8MEH56yzzsqYMWOy//77580338zrr7+exH0mVgRvvfVWaTxVV1envLw8N910U955551Mnz49H3zwQfr165ePP/649DdQVVVVjX3stNNOefXVVzN69OhcfPHF6dWrV+bOnZvDDz98qR/PispfDiyxr3v2f+ONN17k2f811lgjq6yySqZMmZLOnTvnvffey/z580u/QKqrq7PKKqtktdVWy5NPPlk/B02dM46oK9XV1amsrMywYcPyyCOPZOjQoRk/fnx+/etfZ6ONNsqwYcOy9dZbZ+jQoaU/RJJkxowZmT17dunuv61atcpWW22V0aNHZ+21186JJ56Ys846K6NGjSpd392rV69Mnz49r732Wn0cKktBdXV16Q7R1113XQ4//PB07NgxyRchqFOnTnnqqaeSpHSviOSLn0Hl5eWZMmVKaQnnp59+muTff/h26NAhn3/+eSZPnlwPR8bS8v/+3/9Lv3798s9//jNlZWV5//33c+yxx+aoo47KgAED0rNnz2yyySbZe++9M2HChJxwwglJkrZt22abbbbJPffck+SL8TVw4MCMGzcuSXLaaaflsMMOyz777JM5c+ZklVVWyXPPPbfIy2dYfowePTrNmjXLNttsU/odNn/+/CRJixYtsv7666dBgwaZMGFCNttss5SVlZUeb7nAgpPEAwcOzJQpU3LUUUflnnvuyVFHHZWJEyemb9++S/egVmBCN1+pyLP/rVu3zsyZM1NRUZFVV101zz77bJIv/vhZ8MdKnz59Stfj/veZO5YdxhF1raysLLfcckvuvPPO/PKXv8yBBx6YtddeOzvssEN69OiRVVZZJUOGDEl5eXlOPfXU0nZNmzbNO++8k969eyf5Ygz17t0777//fl5++eXstttu2W233XLvvfemU6dOSZJ11lknq6++esaMGZPEGFoeNWzYMF27ds2bb76ZysrKVFVVlWaXOnbsmK5du2bq1Kl58cUXk/z7pE+SbLTRRvnHP/6Rnj17ZvLkyaVrJBec/OvYsWMaN24sdC/nOnfunE8++ST//Oc/k3wRlldeeeWcfvrpSZIePXrk888/T/v27XPRRRflwQcfzPHHH5+Kiopst912+de//pXPP/88FRUV2WyzzfLZZ5+VlpwPGzYs/fv3zymnnJLZs2fnlVdeyYwZM+rtWClep06dsu6662bq1Km5/PLL88EHH6Rhw4Z5880306BBg+yyyy759NNP8+STT2bddddNmzZtSuF8QdguKytLdXV1OnTokLXXXjsHHnhgRo8enZ///Odp0aKFyxOWIqGbr1RXZ/8nTZq0yLP/8+fPz4cffpju3buXlm8uWD6TJAMGDMgjjzySxDKqZZlxRBFWXnnlzJw5s3RTtOSL57UvsP7662fYsGEZM2ZMhg8fniR5/vnn07Vr1xr9unXrlnbt2uXee+9NklxwwQX55z//mQMOOCDJF2OsQ4cOef7555NYYr686tq1a+mSl//8N15llVVKY+wf//hHki9+/iz4WbLjjjtm3LhxWX/99fPRRx9l+vTpSf79s6ZNmzZp2bJlpkyZ4oTNcmzddddN8+bNM3HixDz22GO59dZbc+WVV6Zp06al9zt06JAXX3wxPXv2zB//+Mf8/ve/zxVXXJF11lknq622Wmm2u0OHDunevXvuvvvu0v6vueaarLfeevnkk08yevRojw5bzq299tpZa621svPOO2f27Nk5//zzk3wxy33//ffnyCOPzGqrrZZnn302jRs3zvrrr58333yzdP+IBYH6PycfXn755dK4+c+fYRTPXw18pW9y9n/jjTcunf1/6623Fjr736lTpzRq1CjvvvtuevTokX/9619J/v0HbXV1dTbffPNMnz49c+bM8cNhGWYcUYRddtkla6yxRr773e9m++23zw477JCf/vSnGTRoUG666abMnj07O+20U4488shcfPHFeeKJJ/LBBx9k9dVXr3HzmDXWWCObbbZZ6Q/e9u3bZ/311y+NoQ4dOuSWW27J1VdfXS/HydLRvn37rLzyyjV+DiVf/Pxad911s+qqq9Y4ebdgfGyzzTZ59dVX06xZszRu3DjvvvvuQtdgtm7dOh9//HGmTJlSD0fG0tC0adN07do1EydOzC9+8YscddRR2WKLLZL8e1lwjx498uGHH+aRRx5J//79M2zYsFx77bUZMWJEevbsmbvuuivJFycUd9xxx1Lonj9/flq3bp2TTz45J598coYNG5YePXrUz4GyVDRr1iytWrVKdXV1fvrTn+Z///d/88gjj6SioiINGjRIo0aNstlmm2Xy5MmZPHlytthii3z88celVYMLLJjE2GWXXfLqq6/mlVdeSWICYmkTulkiX/fsf79+/b7y7H+LFi0ybdq0rLHGGvn4449LN5opKytLWVlZKioqsuaaa2b8+PFL7XgphnFEXWvQoEHuu+++7L333tl0003Tv3//dOjQIS+88EJOOumkXHHFFUmSE088MT169Mixxx6bt99+O5999llWX3310omd5s2bZ8MNNyxdmvDfM9llZWVZZZVVlu7BsdQ1b948bdq0WeQfpV26dMmaa66Z559/PvPmzatxUq9Zs2Zp2bJlXn755XTv3j1vvPFGaSXFgn1svvnmqaioyFtvvbV0D4qlasCAAXnuuefy0EMP5bHHHitdY9ugQYMkXzy+qby8vLSy67jjjsuJJ56YP/3pT3n++efz6KOPJkkaNWqUvn375oUXXshnn31W2n611VbLsGHDcvDBB6dJkyb1cIQsTTvuuGOmTZuW7t2755BDDsm1116bCy+8MFtttVUaNmyYnj17Zu7cuZkwYUJ69+6dxo0bZ8KECUlSutThd7/7XekeJdXV1aXVgkL30iV0s0SKPPvfqlWrfPzxx5k/f346depUmgV46aWXcuWVV+bAAw8sPTeXZZtxRBG6du2aM844I5deeml+8Ytf5OKLL86jjz6anXfeOaNGjUryxTK9Cy+8MG+88UYuuuiidO7cOcm/ZwAqKipy9NFHW665gquoqEinTp3y/vvvZ968eTX+KG3dunW6deuWDz/8sPRowqqqqtLSzd69e+fvf/97evXqlffeey/NmjVLknz66af5+9//njPPPDOjR4/2h+5ybrPNNsu6666bvffeO126dMkOO+yQH//4x6UnaHTv3j2rrbZa6brvsrKyHHTQQTn33HPz3nvv5YUXXsisWbNSXl6ePffcM3PmzBGuV2B9+vRJkowbNy6nnXZaWrdunXPPPTevv/562rdvn/XWWy8rr7xynnzyyXTu3DkdO3bMHXfckUGDBmWjjTbKxhtvnKFDh2bq1Klp2rRpJk2alD333LOej2rFJHSzRL7s7H/nzp3r5Oz/jBkz0qlTpxxwwAHZfvvt85Of/CSvvvpq9t1339x///3Zaaedlu5BU+eMI4rWqFGjJMmHH36YyZMnp127dqU7/K611lo5++yz061bt/zoRz8qLfdcoEWLFq7VJl27dk11dXXpkUwLTvCtvPLK6d69exo2bJiHHnooSWrcPXrffffN+PHj07Vr13zwwQcZPHhwvv/972f77bfPb37zm3Tr1i2//e1vS39Es3zq2LFjmjZtmjZt2uTaa6/Nbbfdloceeih9+/bNBRdckI4dO2bNNdfMxIkTS8/arqqqyuGHH55HHnkk06dPT/PmzVNdXZ0mTZr4mbSC69ixY1q1apWHH344zZs3z/HHH5+OHTumW7duSb5YgdO+ffuMHz8+8+bNy3rrrZcPP/ww06dPzxlnnJH3338/U6ZMyXHHHZfE7HZ9alDfBbBsWHD2/+GHH868efNKf9gmXyzt7datWyZOnJiJEyemT58+pet1KyoqSmf/t9tuu9x55501zv4//vjjueWWW/LSSy9lm222yYABA9K8efNsvfXW6dChQ30dLgUxjijKiy++mKqqqrRr1y4zZszIbbfdlmnTpuXSSy9Nw4YNU1VVlfLy8hx22GE54ogj6rtcvsUWXK7y4osvZr311kt1dXXpD9WuXbumTZs2pZs1Nm7cOEkyadKkjB07Ng8//HCSZOedd84zzzyTvffeO9tss43gtAJp2LBhNthggzzzzDOZPn16dt999+y6664ZNmxYLrnkkvzxj3/MhhtumP79+2fevHlJvricpbq6OltuuWVpP8IRyb/H07PPPpsPPvgg7du3z8svv1xj9cMWW2yRt99+O3PmzMkpp5ySoUOH1l/BLJbQzRLr2rVrHnroobz++us1/hD577P/ffr0yeeff166/mjffffNGWeckUMPPbR09v+tt97KlClT0rFjx2y77bY55phjsv766ydJadknyyfjiCJcddVVeeqppzJz5sxMmjQpG2ywQU4++eRsu+22Sf59jfaC5eSwOE2bNk27du1Kz2RfMNNdXl6eLbbYIp07d87EiRPzv//7v3niiScyceLElJWVpWfPnvntb3+blVZaKTvvvHN23nnn+jwM6lH//v3zl7/8JU8++WRpHJx++unZa6+98umnn2aTTTZZaBshm8X5z/E0cODANGrUqHRZS3l5eY4//vj6LZAlInSzxJz9py4YRxThuOOOy+OPP562bdtmm222qbGKAmqjvLw8nTt3LoXuioqKfP755xk/fnzuuOOONGzYMFtvvXUeeuihbL755jnhhBPSpUuX+i2ab5WNN944G2ywQenn0IKTfeutt159lsUyasF4atiwYRKPrFxWlVV7KjpLqKqqKjfffHOmTJmSE044IZWVlaVfJPPmzcuRRx6ZiRMn5oQTTljo7P/AgQOz2267+UGBcQR8673zzju57LLLMmfOnLz//vuZNGlS2rdvny222CJ777136XpKAFgSZrpZYs7+UxeMI+Dbrm3btunRo0deeuml/OAHP8h2221XmmUCgNoy002tOPtPXTCOAABYUZjpplac/acuGEcAAKwozHQDAABAQdyNCAAAAAoidAMAAEBBhG4AAAAoiNANAAAABRG6AQAAoCBCNwAAABRE6AYAAICCCN0AAABQEKEbAAAACvL/AdAfSUtw2afKAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 3
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "分析与结论\n",
    "从准确率对比可以看出，MLP和KNN在MNIST上表现最好，线性回归效果最差。\n",
    "在CIFAR-10上，所有模型准确率均有下降，MLP和逻辑回归相对较优。\n",
    "复杂数据集（如CIFAR-10）对传统机器学习模型挑战较大，深度学习模型更具优势。\n",
    "请结合实验结果进一步分析各模型优缺点和适用场景。"
   ],
   "id": "e03a9557e5488f8a"
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
